package com.ysqcould.mp.service.impl;

import java.util.List;
import java.util.Map;

import cn.hutool.core.util.ObjectUtil;
import com.ysqcould.common.core.domain.AjaxResult;
import com.ysqcould.common.utils.DateUtils;
import com.ysqcould.mp.domain.vo.WxResultBody;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ysqcould.mp.mapper.MpInfoMapper;
import com.ysqcould.mp.domain.MpInfo;
import com.ysqcould.mp.service.IMpInfoService;

import static com.ysqcould.mp.utils.CollectUtils.searchBiz;

/**
 * 公众号管理Service业务层处理
 * 
 * @author jcd
 * @date 2022-10-18
 */
@Slf4j
@Service
public class MpInfoServiceImpl implements IMpInfoService 
{
    @Autowired
    private MpInfoMapper mpInfoMapper;

    /**
     * 查询公众号管理
     * 
     * @param id 公众号管理主键
     * @return 公众号管理
     */
    @Override
    public MpInfo selectMpInfoById(Long id)
    {
        return mpInfoMapper.selectMpInfoById(id);
    }

    /**
     * 查询公众号管理列表
     * 
     * @param mpInfo 公众号管理
     * @return 公众号管理
     */
    @Override
    public List<MpInfo> selectMpInfoList(MpInfo mpInfo)
    {
        return mpInfoMapper.selectMpInfoList(mpInfo);
    }

    /**
     * 新增公众号管理
     * 
     * @param mpInfo 公众号管理
     * @return 结果
     */
    @Override
    public AjaxResult insertMpInfo(MpInfo mpInfo)
    {
        /**
         * 查询为公众号唯一id，并校验公众号是否可用
         */
        int message;
        AjaxResult result=new AjaxResult();
        final WxResultBody wxResultBody = searchBiz(mpInfo.getNickname(), "1");
        if (wxResultBody.getBase_resp().getRet()==0){
            List<Map> list = (List<Map>)wxResultBody.getList();
            if (ObjectUtil.isNotEmpty(list)){
                //只取一条数据
                 Map map=list.get(0);
                 //检验公众号名称是否正确
                if (mpInfo.getNickname().equals(map.get("nickname").toString())){
                    mpInfo.setFakeid(map.get("fakeid").toString());
                    mpInfo.setCreateTime(DateUtils.getNowDate());
                    final int i = mpInfoMapper.insertMpInfo(mpInfo);
                    message=200;
                }else {
                   message=500;
                }
            }else {
                throw new RuntimeException("接口操作失败"+wxResultBody.getBase_resp());
            }
        }
        return result;
    }

    /**
     * 修改公众号管理
     * 
     * @param mpInfo 公众号管理
     * @return 结果
     */
    @Override
    public int updateMpInfo(MpInfo mpInfo)
    {
        return mpInfoMapper.updateMpInfo(mpInfo);
    }

    /**
     * 批量删除公众号管理
     * 
     * @param ids 需要删除的公众号管理主键
     * @return 结果
     */
    @Override
    public int deleteMpInfoByIds(Long[] ids)
    {
        return mpInfoMapper.deleteMpInfoByIds(ids);
    }

    /**
     * 删除公众号管理信息
     * 
     * @param id 公众号管理主键
     * @return 结果
     */
    @Override
    public int deleteMpInfoById(Long id)
    {
        return mpInfoMapper.deleteMpInfoById(id);
    }
}
